<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.prime.com.tr/ui">
    <ui:composition template="Index.xhtml">  
        <ui:define name="content"> 
            <h:body>
                <p:growl id="avisos" showDetail="true"/>
                <h:form id="formEditar">
                    <p:panel header="Cadastro de Cliente" id="panelDados">
                        <h:panelGrid columns="1" >
                            <h:outputText value="Código"/>
                            <p:inputText value="#{clienteHandler.cliente.cliCodigo}" disabled="true" size="5"/>
                            <h:outputText value="Nome cliente"/>
                            <p:inputText value="#{clienteHandler.cliente.cliNome}" size="40" maxlength="45" required="true" requiredMessage="Campo nome obrigatório"/>

                            <h:outputText value="Rg cliente"/>
                            <p:inputMask value="#{clienteHandler.cliente.cliRg}" mask="99.999.999-9" required="true" requiredMessage="Campo rg obrigatório"/>

                            <h:outputText value="Cpf cliente"/>
                            <p:inputMask value="#{clienteHandler.cliente.cliCpf}" mask="999.999.999-99" required="true" requiredMessage="Campo cpf obrigatório"/>

                            <h:outputText value="Data de nascimento Cliente"/>
                            <p:calendar value="#{clienteHandler.cliente.clidataNascimento}" required="true" requiredMessage="Campo data nascimento em branco."
                                            converterMessage="Data partida inválida." pattern="dd/MM/yyyy" locale="pt_BR">
                                </p:calendar>

                            <h:panelGrid columns="1">
                                <h:outputText value="Estado"/>
                                <h:panelGrid columns="2">
                                    <p:column>

                                        <h:selectOneMenu id="estado" value="#{clienteHandler.idEstado}" required="true" requiredMessage="Campo estado obrigatório." >
                                            <f:selectItem itemValue="" itemLabel="selecione o estado"/>
                                            <f:selectItems value="#{estadoHandler.listEstado()}" var="estado"
                                                           itemLabel="#{estado.estDescricao}" itemValue="#{estado.estCodigo}">
                                            </f:selectItems>
                                            <p:ajax update="cidades"  listener="#{clienteHandler.popularCidades()}" />  
                                        </h:selectOneMenu>
                                    </p:column>
                                    <p:column>
                                        <p:commandButton action="#{clienteHandler.paginaEstado()}" onclick="CadastroEstado.xhtml" image="ui-icon-pencil" immediate="true" title="cadastrar estado"/>
                                    </p:column>
                                </h:panelGrid>
                            </h:panelGrid>

                            <h:panelGrid columns="1">
                                <h:outputText value="Cidade"/>
                                <h:panelGrid columns="2">
                                    <p:column>
                                        <h:selectOneMenu id="cidades" value="#{clienteHandler.idCidade}" required="true" requiredMessage="Campo cidade obrigatório." >
                                            <f:selectItem itemValue="" itemLabel="selecione a cidade"/>
                                            <f:selectItems value="#{clienteHandler.cidades}" var="cidade"
                                                           itemLabel="#{cidade.cidDescricao}" itemValue="#{cidade.cidCodigo}">
                                            </f:selectItems>
                                        </h:selectOneMenu>
                                    </p:column>
                                    <p:column>
                                        <p:commandButton action="#{clienteHandler.paginaCidade()}" onclick="CadastroCidade.xhtml" immediate="true" title="cadastrar cidade"  image="ui-icon-pencil"/>
                                    </p:column>
                                </h:panelGrid>
                            </h:panelGrid>
                            <h:outputText value="Bairro cliente"/>
                            <p:inputText value="#{clienteHandler.cliente.bairro}" size="40" maxlength="45" required="true" requiredMessage="Campo bairro obrigatório"/>

                            <h:outputText value="Rua cliente"/>
                            <p:inputText value="#{clienteHandler.cliente.cliRua}" size="40" maxlength="45" required="true" requiredMessage="Campo rua obrigatório"/>

                            <h:outputText value="Número cliente"/>
                            <p:inputText value="#{clienteHandler.cliente.cliNumero}" size="15" maxlength="8" required="true" requiredMessage="Campo numero obrigatório"/>
                            <p:column>
                                <p:commandButton action="#{clienteHandler.salvar}"  value="Salvar" update="avisos panelDados"  image="ui-icon ui-icon-disk"/>
                                <p:commandButton value="Pesquisar" image="ui-icon-search" action="#{clienteHandler.listacliente()}" update="formPesquisa" oncomplete="dlg2.show();"/>
                                <p:commandButton value="Cancelar" image="ui-icon-document" update="panelDados" oncomplete="cancelar.show();"/> 
                            </p:column>
                        </h:panelGrid>
                    </p:panel>
                    <p:spacer width="0" height="40" />
                </h:form>
                <p:dialog id="dialogcliente" header="Pesquisar Cliente" hideEffect="drop" height="400" width="1300"  widgetVar="dlg2">  
                    <h:form id="formPesquisa">
                        <p:dataTable id="tabelacliente" var="c" value="#{clienteHandler.listacliente()}" 
                                     emptyMessage="Nenhum registro encontrado." rows="8" 
                                     paginator="true" selectionMode="single">

                            <p:column headerText="Código" style="text-align: center">
                                <h:outputText value="#{c.cliCodigo}" />
                            </p:column>
                            <p:column filterBy="#{c.cliNome}" headerText="Pesquisa por Nome">  
                                <h:outputText value="#{c.cliNome}" />  
                            </p:column>
                            <p:column headerText="Rg" style="text-align: center">
                                <h:outputText value="#{c.cliRg}" />
                            </p:column>

                            <p:column headerText="Cpf" style="text-align: center">
                                <h:outputText value="#{c.cliCpf}" />
                            </p:column>
                            <p:column headerText="Data nascimento" style="text-align: center">
                                <h:outputText value="#{c.clidataNascimento}" >
                                    <f:convertDateTime type="date" pattern="dd/MM/yyyy" locale="pt_BR"/>
                                </h:outputText>
                            </p:column>
                            <p:column headerText="Estado" style="text-align: center">
                                <h:outputText value="#{c.cliEstado}" />
                            </p:column>
                            <p:column headerText="Cidade" style="text-align: center">
                                <h:outputText value="#{c.cliCidade}" />
                            </p:column>
                            <p:column headerText="Bairro" style="text-align: center">
                                <h:outputText value="#{c.bairro}" />
                            </p:column>
                            <p:column headerText="Rua" style="text-align: center">
                                <h:outputText value="#{c.cliRua}" />
                            </p:column>
                            <p:column headerText="Número" style="text-align: center">
                                <h:outputText value="#{c.cliNumero}" />
                            </p:column>
                            <p:column style="text-align: center">
                                <p:commandButton actionListener="#{clienteHandler.parametroRemover}" image="ui-icon-trash"
                                                 update="avisos" title="excluir registro" oncomplete="confirmacao.show()" immediate="true">  
                                    <f:param id="idParaRemover" value="#{c}"/>
                                </p:commandButton> 
                                <p:commandButton actionListener="#{clienteHandler.alterar(c)}" onclick="CadastroCliente.xhtml"
                                                 image="ui-icon-wrench" title="alterar registro" immediate="true">
                                </p:commandButton>
                            </p:column>  
                        </p:dataTable>
                    </h:form>
                </p:dialog>
                <p:confirmDialog message="Deseja realmente excluir registro?" hideEffect="explode" 
                                 header="Excluir" severity="alert" widgetVar="confirmacao" modal="true">
                    <h:form>
                        <p:commandButton value="Sim" oncomplete="confirmacao.hide();" 
                                         ajax="false" action="#{clienteHandler.remover()}" immediate="true"/>
                        <p:commandButton value="Não" onclick="confirmacao.hide()" type="button" immediate="true"/>
                    </h:form>
                </p:confirmDialog>

                <p:confirmDialog  message="Deseja Cancelar?" hideEffect="drop" modal="true" 
                                  header="Cancelar cliente" severity="info" widgetVar="cancelar">
                    <h:form>
                        <p:commandButton action="#{clienteHandler.cancelar()}" onclick="cancelar.hide()" value="Sim" update="formEditar:panelDados"/>
                        <p:commandButton value="Não" onclick="cancelar.hide()"  type="button"/>
                    </h:form>
                </p:confirmDialog>
            </h:body>
        </ui:define>
    </ui:composition>
</html>
